1. Field of the Invention
The present invention relates generally to an improved data processing system and in particular to a method and apparatus for processing data. Still more particularly, the present invention related to a computer implemented method, apparatus, and computer usable program code for accessing block storage.
2. Description of the Related Art
Increasingly large symmetric multi-processor data processing systems are not being used as single large data processing systems. Instead, these types of data processing systems are being partitioned and used as smaller systems. These systems are also referred to as logical partitioned (LPAR) data processing systems. A logical partitioned functionality within a data processing system allows multiple copies of a single operating system or multiple heterogeneous operating systems to be simultaneously run on a single data processing system platform. A partition, within which an operating system image runs, is assigned a non-overlapping subset of the platforms resources. These platform allocable resources include one or more architecturally distinct processors and their interrupt management area, regions of system memory, and input/output (I/O) adapter bus slots. The partition's resources are represented by the platform's firmware to the operating system image.
Each distinct operating system or image of an operating system running within a platform is protected from each other, such that software errors on one logical partition cannot affect the correct operation of any of the other partitions. This protection is provided by allocating a disjointed set of platform resources to be directly managed by each operating system image and by providing mechanisms for ensuring that the various images cannot control any resources that have not been allocated to that image. Furthermore, software errors in the control of an operating system's allocated resources are prevented from affecting the resources of any other image. Thus, each image of the operating system or each different operating system directly controls a distinct set of allocable resources within the platform.
With respect to hardware resources in a logical partitioned data processing system, these resources are shared dis-jointly among various partitions. These resources may include, for example, input/output (I/O) adapters, memory DIMMs, non-volatile random access memory (NVRAM), and hard disk drives. Each partition within a logical partitioned data processing system may be booted and shut down over and over without having to power-cycle the entire data processing system.
With these types of logical partitioned systems, a client application running on one partition may access virtual storage devices through a specially designated partition called a virtual input/output server partition. This partition is located on the same computer or device as the partition in which the client executes. This virtual storage is also referred to as block storage. A client accesses this block storage through a pair of virtual adapters. One virtual adapter is associated with the client and is referred to as the client adapter. The other virtual adapter is associated with the virtual input/output server and referred to as the server adapter. The client process makes requests through the client adapter and the virtual input/output server provides access to the data in the block storage through the server adapter.
With these types of systems, a need may arise to move the client from a partition in one data processing system to a partition in another data processing system. This need may be, for example, a need to perform maintenance on hardware on the data processing system on which the client is currently executing. The client also may be moved to perform an upgrade in which the second data processing system has upgraded components and performance as compared to the data processing system in which the client is currently executing.
It is often desirable to terminate execution of the client on the source data processing system and then reinitiate execution of the client on the target data processing system. The client can be moved to the target data processing system, and the client's execution can start on that system without interruption to applications running on the client. The client may also be move while it is not running. Data for the state of the client on the source data processing system can also be saved while the client is running; that is the client is suspended and restored to its former operating state on the same processing system or a target processing system at a later time.